iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Modern Web

前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁系列 第 18

Day18 React前端,利用router來串接記帳總頁面引導Add Account

  • 分享至 

  • xImage
  •  

前言

接下來就要到比較困難的部分了,這邊會在不同的頁面中跳轉,修改內容,來達成當我們點選Add Account後,會自動跳轉到新增帳目的頁面,然後當我們新增玩資料按下確認之後,就會跳轉到List Account這個頁面中。
根據上面的邏輯,我們需要用到跳轉頁面的功能,這裡就會用到React的插件Router,接下來我們也會教大家安裝這個插件,並且使用這個功能,最後再把所有功能串接起來,完成這個Add Account的功能

回到ListAccountComponent.jsx頁面
我們回到這個頁面,應該會看到這個功能

    function addNewAccount(){
    //引導到Add Account
    }

剛剛說了我們接下來要進行頁面跳轉,需要用的Router方法,這個時候我們需要到終端機中去下載react-router-dom這個dependency
所需執行的指令如下

npm react-router-dom

終端機的樣子如下,大家要記得,在安裝之前要確定自己已經到最底層,也就是Account-frontend這個資料夾中安裝,不然系統會安裝到上一層,這樣沒有辦法被使用
https://ithelp.ithome.com.tw/upload/images/20240926/20152864rex3n2cOmh.png
安裝完成後可以到Package-lock.json或package.json中確認自己有成功下載,當你下載成功,就會看到react-router-dom有成功出現在depenencise裏頭:

  "packages": {
    "": {
      "name": "account-frontend",
      "version": "0.0.0",
      "dependencies": {
        "axios": "^1.7.6",
        "bootstrap": "^5.3.3",
        "react": "^18.3.1",
        "react-bootstrap": "^2.10.4",
        "react-dom": "^18.3.1",
        "react-router-dom": "^6.26.1"
      },

成功下載完成後,就要開始引用了,我們再次回到ListAccountComponent中,然後到上頭匯入資源的地方,新增

import {useNavigate} from 'react-router-dom'

最終會看到以下的結果

import React, { useEffect, useState } from 'react'
import { getAllAccounts } from '../Service/AccountService'
import {useNavigate} from 'react-router-dom'

這樣子,我們再回到ListAccountComponent中,再這裡面新增一個功能

    const navigate = useNavigate()

這就是呼叫這個router的useNavigate的功能,把navigate當作宣告的程式,就像是我們之前在後端不斷在引用AccountRepository,這也是同樣的功能
所以我們在下面的funciton中,輸入我們要引導的路徑

    function addNewAccount(){
     navigate('/add-account')
    }

這樣只是設定引導到這個位址,但還沒有說要轉到哪裡去
我們要在App.jsx中告訴React我們要哪個網址要引導到哪裡,所以我們要回到App.jsx中
要開始修改這裡

import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import HelloWorld from './Helloworld'
import HeaderComponent from './Component/HeaderComponent'
import FooterComponent from './Component/FooterComponent'
import AccountComponent from './Component/AccountComponent'
import ListAccountCompinent from './Component/ListAccountCompinent'
function App() {
  
  return (
    <>
    <HeaderComponent />
        <ListAccountCompinent />
    <FooterComponent />
    </>
  )
}
export default App

同樣的,我們要也是用到react-router-dom的功能,所以這個要新增

import { BrowserRouter, Routes,Route} from 'react-router-dom'

BrowserRouter指的是跟網址相關的區域,在這裡面,每一個Component都可以新增一個對應的網址,而要新增網址,就要把Component用Routes包起來,我們可以寫成以下的程式碼

import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import HelloWorld from './Helloworld'
import HeaderComponent from './Component/HeaderComponent'
import FooterComponent from './Component/FooterComponent'
import AccountComponent from './Component/AccountComponent'
import ListAccountCompinent from './Component/ListAccountCompinent'
import { BrowserRouter, Routes,Route} from 'react-router-dom'
function App() {
  
  return (
    <>
    <BrowserRouter>
        <HeaderComponent />
        <Routes>
          {/* http://localhost:5173 */}
          <Route path='/' element={<ListAccountComponent />}></Route>
        </Routes>
        <FooterComponent />
    </BrowserRouter>
    </>
  )
}
export default App

這代表的是當我們輸入網址,沒有輸入任何內容的時候,就會引導到ListAccountComponet
接下來要設定add component
接下來我們只要在Routes底下再新增/add-account的路徑,告訴React 這個路徑要去的Component後,當我們轉址到這,就會跳轉到AccountComponent.jsx這個頁面裡面。

    <>
    <BrowserRouter>
        <HeaderComponent />
        <Routes>
          {/* http://localhost:8080 */}
          <Route path='/' element={<ListAccountCompinent />}></Route>
          {/* http://localhost:8080/add-account */}
          <Route path='/add-account' element={<AccountComponent />}></Route>
        </Routes>
        <FooterComponent />
    </BrowserRouter>
    </>

全部儲存之後,就會看到這個畫面
https://ithelp.ithome.com.tw/upload/images/20240926/20152864iKc1CYji1Z.png
接下來點選Add account
https://ithelp.ithome.com.tw/upload/images/20240926/201528641N4B4K4ySL.png
成功轉址到這裡
到這裡,我們就學會了建立轉址系統,新增轉址功能,並且成功把這兩個功能給串接起來了!


上一篇
Day17 React前端頁面 - 開發記帳總清單頁面
下一篇
Day19 React前端開發 修改記帳頁面開發-顯示修改記帳頁面
系列文
前後端整合,用Spring boot 與React 開發屬於自己的記帳網頁30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言